﻿namespace TestTool.Tests.Engine.Base.Definitions
{
    using System;
    using System.Collections.Generic;
    using System.Net;
    using System.Runtime.CompilerServices;
    using TestTool.HttpTransport.Interfaces;
    using TestTool.Tests.Common.TestEngine;
    using TestTool.Tests.Definitions.Data;
    using TestTool.Tests.Definitions.Enums;
    using TestTool.Tests.Definitions.Interfaces;

    public class TestLaunchParam : BaseTestParam
    {
        private TestTool.Tests.Engine.Base.Definitions.FeatureDefinitionMode _featureDefinitionMode;
        private List<Feature> _features = new List<Feature>();
        private TestTool.HttpTransport.Interfaces.Security _security;

        public IPAddress CameraIp { get; set; }

        public string CameraUUID { get; set; }

        public TestTool.Tests.Common.TestEngine.EnvironmentSettings EnvironmentSettings { get; set; }

        public string EventTopic { get; set; }

        public TestTool.Tests.Engine.Base.Definitions.FeatureDefinitionMode FeatureDefinitionMode
        {
            get
            {
                return this._featureDefinitionMode;
            }
            set
            {
                this._featureDefinitionMode = value;
            }
        }

        public List<Feature> Features
        {
            get
            {
                return this._features;
            }
        }

        public int MessageTimeout { get; set; }

        public string MetadataFilter { get; set; }

        public NetworkInterfaceDescription NIC { get; set; }

        public int OperationDelay { get; set; }

        public IOperator Operator { get; set; }

        public string Password { get; set; }

        public string Password1 { get; set; }

        public string Password2 { get; set; }

        public string PTZNodeToken { get; set; }

        public int RebootTimeout { get; set; }

        public string RecordingToken { get; set; }

        public int RecoveryDelay { get; set; }

        public int RelayOutputDelayTimeMonostable { get; set; }

        public string RetentionTime { get; set; }

        public int SearchTimeout { get; set; }

        public string SecureMethod { get; set; }

        public TestTool.HttpTransport.Interfaces.Security Security
        {
            get
            {
                return this._security;
            }
            set
            {
                this._security = value;
            }
        }

        public string ServiceAddress { get; set; }

        public int SubscriptionTimeout { get; set; }

        public string TopicNamespaces { get; set; }

        public bool UseEmbeddedPassword { get; set; }

        public string UserName { get; set; }

        public bool UseUTCTimestamp { get; set; }

        public IVideoForm VideoForm { get; set; }

        public string VideoSourceToken { get; set; }
    }
}

